﻿// This file is part of My Nes
//
// A Nintendo Entertainment System / Family Computer (Nes/Famicom)
// Emulator written in C#.
// 
// Copyright © Alaa Ibrahim Hadid 2009 - 2019
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// 
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
// GNU General Public License for more details.

// You should have received a copy of the GNU General Public License
// along with this program.If not, see<http://www.gnu.org/licenses/>.
// 
// Author email: mailto:ahdsoft@online.de
//
namespace MyNes.Core
{
    public interface IVideoProvider
    {
        string Name { get; }
        string ID { get; }
        void WriteErrorNotification(string message, bool instant);
        void WriteInfoNotification(string message, bool instant);
        void WriteWarningNotification(string message, bool instant);
        void TakeSnapshotAs(string path, string format);
        void TakeSnapshot();

        void Initialize();
        void ShutDown();
        void SignalToggle(bool started);
        void SubmitFrame(ref int[] buffer);

        void ResizeBegin();
        void ResizeEnd();

        void ApplyRegionChanges();
        void Resume();
        void ToggleAspectRatio(bool keep_aspect);
        void ToggleFPS(bool show_fps);
        void ApplyFilter();
    }
}
